// 权限名称中英文映射
export const permissionNameMapping = {
  // 用户管理权限
  'UserCreate': '创建用户',
  'UserRead': '查看用户',
  'UserUpdate': '编辑用户',
  'UserDelete': '删除用户',
  'UserManage': '用户管理',

  // 角色管理权限
  'RoleCreate': '创建角色',
  'RoleRead': '查看角色',
  'RoleUpdate': '编辑角色',
  'RoleDelete': '删除角色',
  'RoleManage': '角色管理',
  'RolePermissionAssign': '分配角色权限',

  // 权限管理
  'PermissionCreate': '创建权限',
  'PermissionRead': '查看权限',
  'PermissionUpdate': '编辑权限',
  'PermissionDelete': '删除权限',
  'PermissionManage': '权限管理',

  // 部门管理权限
  'DepartmentCreate': '创建部门',
  'DepartmentRead': '查看部门',
  'DepartmentUpdate': '编辑部门',
  'DepartmentDelete': '删除部门',
  'DepartmentManage': '部门管理',

  // 系统管理权限
  'SystemConfig': '系统配置',
  'SystemLog': '系统日志',
  'SystemBackup': '系统备份',
  'SystemRestore': '系统恢复',

  // 数据权限
  'DataAll': '全部数据',
  'DataDepartment': '部门数据',
  'DataPersonal': '个人数据',

  // 通用权限（根据实际数据库中的权限名称）
  'Create': '创建',
  // 'Read': '查看',
  'Update': '更新',
  'Delete': '删除',
  'Manage': '管理',
  'Select': '查询',
  'Query': '查询',
  'Edit': '编辑',
  'Export': '导出',
  'Import': '导入',
  'Approve': '审批',
  'Reject': '拒绝',

  // 默认映射（如果找不到对应的中文名称）
  'default': '未知权限'
}

/**
 * 获取权限的中文名称
 * @param {string} permissionName - 权限的英文名称
 * @returns {string} 权限的中文名称
 */
export function getPermissionChineseName(permissionName) {
  if (!permissionName) return permissionNameMapping.default

  // 直接匹配
  if (permissionNameMapping[permissionName]) {
    return permissionNameMapping[permissionName]
  }

  // 尝试部分匹配
  for (const [key, value] of Object.entries(permissionNameMapping)) {
    if (permissionName.toLowerCase().includes(key.toLowerCase()) ||
        key.toLowerCase().includes(permissionName.toLowerCase())) {
      return value
    }
  }

  // 如果都找不到，返回原名称
  return permissionName
}

/**
 * 批量转换权限名称
 * @param {Array} permissions - 权限数组
 * @returns {Array} 转换后的权限数组
 */
export function convertPermissionNames(permissions) {
  return permissions.map(permission => ({
    ...permission,
    name: getPermissionChineseName(permission.name || permission.PermissionName)
  }))
}
